Ana içeriğe geç

Covalent Api Tarafından desteklenen Zincirleri Al

Covalent Api çoklu blok zincirlerden tek Api kullanarak veri çekmeyi sağlamaktadır. Bünyesinde 15'ten fazla zincir bulundurmaktadır. Bu sayı her geçen gün artmaktadır. Bu zincirler mainnet adı verilen ana zincirler ve testnetler adı verilen test zincirleri olarak ikiye ayrılmaktadır. Bu zincirlerin görüntülenmesi için Covalent Api sorgu sağlamaktadır. Devamında bu sorgu fonksiyon haline getirilecektir.

  import requests 

Tablo 18

Tablo 18'de görüldüğü üzere diğer fonksiyonlarda olduğu gibi ilk olarak "requests" kütüphanesi daha önce eklenmediyse eklenmelidir. Bu kütüphane ile oluşturulan URL'ler sorgulanmaktadır. Öncesinde kütüphane import metodu ile eklendiyse yeniden eklenmesine gerek yoktur. Yeniden ekleme derleme süresini yavaşlatmaktadır.

  def TümZincirleriAl(ApiAnahtarı): 

Tablo 19

Tablo 19'da görüldüğü üzere başlangıçta fonksiyon tanımlanırken "def" metodu kullanılmaktadır. Fonksiyon tanımlanırken TümZincirleriAl adı tercih edilmiştir ama yerine farklı bir başlık da tercih edilebilmektedir. Parametre olarak sadece "ApiAnahtarı" istemektedir. Bu anahtar Covalent Api'ye kayıt olunurken ücretsiz olarak oluşturulan ve giriş yapılan sayfada gözüken anahtardır. Yapılan sorguları kişinin imzalamasını ve kendisinin yaptığını belirtmesini sağlar.

  URL = "https://api.covalenthq.com/v1/chains/?key=" + ApiAnahtarı 

Tablo 20

Tablo 20'de yapılacak sorguya uygun URL yapısı oluşturulmaktadır. Bu URL yapısı sabit ve parametre kısmı olarak ikiye ayrılır. Sabit kısımda işlemin türünü belirten işlem anahtarı bulunurken parametre kısımda öncesinde girdi olarak girilen Api Anahtarı olmaktadır. Bu iki kısım string toplama işlemi ile birleştirilmektedir. Bu işlem gerçekleştirilirken iki verinin de string formatında olması gerekmektedir. Eğer biri bile string formatında değilse "str()" fonksiyonu ile string formatına çevrilmelidir.

  istek = requests.get(URL) hamverim = (istek.json()) 

Tablo 21

Tablo 21'de, oluşturulan URL yapısı sonrasında başlangıçta eklenen requests kütüphanesinin "get" metoduna girdi olarak verilir ve çıktısı "istek" değişkenine kaydedilir. Bu istek verisi sonrasında anahtar kilit metoduna daha uygun olan "json" formatına ".json()" fonksiyonu ile çevrilir. Json formatına çevrilen veri hamverim adındaki değişkene kaydedilir.

  verim = hamverim["data"] 

Tablo 22

Kaydedilen hamverim değişkeni ham bir haldedir. İçerisinde verinin beraberinde sorgunun başarılı olup olmadığı vb. kullanılmayacak değerler barındırmaktadır. Bu veriler kullanılmayacak olduğu için "hamverim" değişkeni içerisinden "data" anahtarına erişilerek "verim" değişkenine Tablo 22'de kaydedilir. Bu sayede veri, içerisinden anahtarlar ile erişime hazır bir hal alır.

  liste = [] 

Tablo 23

Anahtar ile erişilen verilerin çıktı olarak gösterilmesi için bir veri tabanına benzer şekilde listeye eklenmesi gerekmektedir. Eklenecek bu liste Tablo 23'de verildiği üzere köşeli parantezler ile tanımlanmaktadır. Liste şu anda boş durumdadır. Anahtarlara erişilip değişkenler eklendikçe doldurulacaktır.

  SonGüncelleme = verim["updated\_at"] liste.append("Son Güncelleme: " + SonGüncelleme) 

Tablo 24

Tablo 24'de görüldüğü gibi ilk erişilen veri SonGüncelleme olmaktadır. SonGüncelleme verisi sorgulanan verinin doğrulandığı son güncelleme tarihini ifade etmektedir. Verim içerisinden "updated_at" anahtarı ile erişilmektedir. Değişkene kaydedilen veri sonrasında liste içerisine ".append ()" metodu ile uygun başlık ve string toplama işlemi kullanılarak eklenmektedir. Bu veri tüm zincirler için ortak olmaktadır. Bu nedenle for döngüsü öncesinde eklenmiştir.

  items = verim["items"] 

Tablo 25

Şu ana kadar erişilen veriler tüm zincirler için oluşturulmuş ortak verilerdir. Asıl kullanılacak ve anlamlandırılacak veri Tablo 25'de görüldüğü üzere "items" anahtarı ve değişkeni içerisindedir. Bu değişken liste halinde olduğundan mütevellit for döngüsü içerisinde her bir elemanına erişilebilmektedir.

  index = 1 

Tablo 26

Döngü içerisine girilmeden önce döngüde verileri kaydederken birbiri ile karışmaması amacıyla kullanılmak üzere bir numara tanımlanmaktadır. Tablo 26'da bu numaranın tanımı yapılmaktadır. Bu numara döngü içerisinde arttırılarak başlıklar içerisindeki veri farklı numaralara sahip olur ve birbiri ile karışma durumu gerçekleşmez.

  for item in items: 

Tablo 27

Tablo 27'de görüldüğü üzere Döngü tanımlanırken "items" listesi içerisinde her eleman için item adında kaydedilir ve döngüye sokulur. Döngü sonrası bir sonraki elemana geçilip item değişkeni yeni değişken olarak kaydedilir. Bu şekilde tüm elemanlar için işlem yapılana kadar devam sağlanır.

  İsim = ["İndex Numarası: " + str(index), "Zincir İsmi: " + str(item["name"])],
ZincirNumarası = ["İndex Numarası: " + str(index), "Zincir Numarası: " + str(item["chain\_id"])]
Veritabanıİsimlendirmesi = ["İndex Numarası: " + str(index), "Veritabanı İsimlendirmesi: " + str(item["db\_schema\_name"])]
Etiket = ["İndex Numarası: " + str(index), "Etiket: " + str(item["label"])]
LogoURL = ["İndex Numarası: " + str(index), "Logo URL: " + str(item["logo\_url"])]

Tablo 28

Tablo 28'de verilmiş olduğu üzere döngü içerisine girildikten sonra anahtarlara sırayla erişilmektedir. Anahtarlara erişilirken liste şeklinde kaydedilmektedir. Liste içerisinde iki eleman vardır. İlk eleman index numarasını ifade eder. İndex numarası eklenirken integer formatında olan veri "str()" fonksiyonu ile string değerine çevrilir. İkinci eleman uygun başlık ve anahtara erişilerek string toplama ile eklenmektedir. Anahtarlara sırasıyla bakılması gerekirse:

  • İsim: Desteklenen zincirlerin resmi adlarını belirtmektedir. İtem içerisinden "name" anahtarı ile erişilmektedir.
  • ZincirNumarası: Şu ana kadar fonksiyonlarda kullanılan zincir numaralarını çıktı olarak vermektedir. İtem içerisinden "chain_id" anahtarı ile erişilmektedir.
  • Veritabanıİsimlendirmesi: Zincirin veritabanına eklenirken tercih edilen ismi ifade etmektedir. Zincir içerisinden "db_schema_name" anahtarı ile erişilmektedir.
  • Etiket: Zincirin etiketini ifade etmektedir. Genellikle zincirin kullanıcılar arasındaki adını belirtmektedir. Zincir içerisinden "label" anahtarı ile erişilmektedir.
  • LogoURL: Desteklenen zincirlerin logolarını link olarak çıktı vermektedir. İtem içerisinden "logo_url" anahtarı ile erişilmektedir.
  liste.append(İsim) liste.append(ZincirNumarası) liste.append(Veritabanıİsimlendirmesi) liste.append(Etiket) liste.append(LogoURL) 

Tablo 29

Tablo 29'da anahtarlar ile erişilip uygun index ve anahtar ile erişilen değişkenler, sırasıyla liste içerisine ".append()" metodu ile eklenmektedir. Listeye bu şekilde eklenen değişkenler sayesinde liste bir sonraki item elemanına geçmek için hazır hale gelir.

  index += 1 

Tablo 30

Tablo 30'da görüldüğü üzere "for" döngüsünden çıkılmadan önce index değeri bir arttırılarak kaydedilir. Bu sayede listeye eklenen değerler aynı başlıkla kaydedilse de farklı index değerlerine sahip olarak birbirlerinden ayırt edilebilir hale gelirler.

  for i in liste: print(i) 

Tablo 31

Döngü içerisinden çıkılıp tüm değişkenler listeye eklendikten sonra liste hazır hale gelmektedir. Ancak henüz bu veri görselleştirilip ekrana yazdırılmamıştır. Bunun sağlanması için Tablo 31'de görüldüğü üzere liste içerisinde kısa bir for döngüsü gerçekleştirilir. Her eleman "i" olarak kaydedilir ve teker teker yazdırılır.

  return liste 

Tablo 32

Tablo 32'de fonksiyon tamamlandıktan sonra return metodu ile liste fonksiyon çıktısı olarak verilmektedir. Bu çıktı fonksiyon çağırılırken değişkene kaydedilmesi ile kullanılabilmektedir.

  def TümZincirleriAl(ApiAnahtarı): URL = "https://api.covalenthq.com/v1/chains/?key=" + ApiAnahtarı istek = requests.get(URL) verim = (istek.json()) verim = verim["data"] liste = [] SonGüncelleme = verim["updated\_at"] liste.append("Son Güncelleme: " + SonGüncelleme) items = verim["items"] index = 1 for item in items: İsim = ["İndex Numarası: " + str(index), "Zincir İsmi: " + str(item["name"])] ZincirNumarası = ["İndex Numarası: " + str(index), "Zincir Numarası: " + str(item["chain\_id"])] Veritabanıİsimlendirmesi = ["İndex Numarası: " + str(index), "Veritabanı İsimlendirmesi: " + str(item["db\_schema\_name"])] Etiket = ["İndex Numarası: " + str(index), "Etiket: " + str(item["label"])] LogoURL = ["İndex Numarası: " + str(index), "Logo URL: " + str(item["logo\_url"])] liste.append(İsim) liste.append(ZincirNumarası) liste.append(Veritabanıİsimlendirmesi) liste.append(Etiket) liste.append(LogoURL) liste.append("") index += 1 for i in liste: print(i) return liste 

Tablo 33

Tablo 33'de kodun tamamı ifade edilmiştir. Fonksiyon özetlenecek olunursa, ilk olarak fonksiyon girdisi olarak Api anahtarı alınır. Alınan bu anahtar URL yapısına eklenen kütüphane sayesinde eklenip sorgulanır. Sorgu kaydedilir ve SonGüncelleme değişkeni listeye ilk eleman olarak eklenir. Devamında "items" listesi içerisinde for döngüsü yapılarak uygun anahtar ve sıralandırma işlemleri ile listeye eklenir. İndex değeri bir arttırılarak döngüden çıkılır. Sonrasında tüm verilerin eklenildiği "liste" değişkeni içerisinde for döngüsü ile tüm değişkenler konsola yazdırılır. Fonksiyondan çıkılırken de liste değişkeni fonksiyon çıktısı olarak verilerek fonksiyon tamamlanmış hale gelir.

  Son Güncelleme: 2021-08-04T09:10:16.942316939Z ['İndex Numarası: 1', 'Zincir İsmi: eth-mainnet'] ['İndex Numarası: 1', 'Zincir Numarası: 1'] ['İndex Numarası: 1', 'Veritabanı İsimlendirmesi: chain\_eth\_mainnet'] ['İndex Numarası: 1', 'Etiket: Ethereum Mainnet'] ['İndex Numarası: 1', 'Etiket: Ethereum Mainnet'] ['İndex Numarası: 1', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/ethereum-eth-logo.png']
['İndex Numarası: 2', 'Zincir İsmi: eth-kovan'] ['İndex Numarası: 2', 'Zincir Numarası: 42'] ['İndex Numarası: 2', 'Veritabanı İsimlendirmesi: chain\_eth\_kovan'] ['İndex Numarası: 2', 'Etiket: Ethereum Testnet Kovan'] ['İndex Numarası: 2', 'Etiket: Ethereum Testnet Kovan'] ['İndex Numarası: 2', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/ethereum-eth-logo.png']
['İndex Numarası: 3', 'Zincir İsmi: matic-mainnet'] ['İndex Numarası: 3', 'Zincir Numarası: 137'] ['İndex Numarası: 3', 'Veritabanı İsimlendirmesi: chain\_matic\_mainnet'] ['İndex Numarası: 3', 'Etiket: Matic Mainnet'] ['İndex Numarası: 3', 'Etiket: Matic Mainnet'] ['İndex Numarası: 3', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/polygon-matic-logo.png']
['İndex Numarası: 4', 'Zincir İsmi: matic-mumbai'] ['İndex Numarası: 4', 'Zincir Numarası: 80001'] ['İndex Numarası: 4', 'Veritabanı İsimlendirmesi: chain\_matic\_mumbai'] ['İndex Numarası: 4', 'Etiket: Matic Testnet Mumbai'] ['İndex Numarası: 4', 'Etiket: Matic Testnet Mumbai'] ['İndex Numarası: 4', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/polygon-matic-logo.png']
['İndex Numarası: 5', 'Zincir İsmi: avalanche-mainnet'] ['İndex Numarası: 5', 'Zincir Numarası: 43114'] ['İndex Numarası: 5', 'Veritabanı İsimlendirmesi: chain\_avalanche\_mainnet'] ['İndex Numarası: 5', 'Etiket: Avalanche C-Chain Mainnet'] ['İndex Numarası: 5', 'Etiket: Avalanche C-Chain Mainnet'] ['İndex Numarası: 5', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/avalanche-avax-logo.png']
['İndex Numarası: 6', 'Zincir İsmi: avalanche-testnet'] ['İndex Numarası: 6', 'Zincir Numarası: 43113'] ['İndex Numarası: 6', 'Veritabanı İsimlendirmesi: chain\_avalanche\_testnet'] ['İndex Numarası: 6', 'Etiket: Avalanche Fuji Testnet'] ['İndex Numarası: 6', 'Etiket: Avalanche Fuji Testnet'] ['İndex Numarası: 6', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/avalanche-avax-logo.png']
['İndex Numarası: 7', 'Zincir İsmi: bsc-mainnet'] ['İndex Numarası: 7', 'Zincir Numarası: 56'] ['İndex Numarası: 7', 'Veritabanı İsimlendirmesi: chain\_bsc'] ['İndex Numarası: 7', 'Etiket: Binance Smart Chain'] ['İndex Numarası: 7', 'Etiket: Binance Smart Chain'] ['İndex Numarası: 7', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/binance-coin-bnb-logo.png']
['İndex Numarası: 8', 'Zincir İsmi: bsc-testnet'] ['İndex Numarası: 8', 'Zincir Numarası: 97'] ['İndex Numarası: 8', 'Veritabanı İsimlendirmesi: chain\_bsc\_testnet'] ['İndex Numarası: 8', 'Etiket: Binance Smart Chain Testnet'] ['İndex Numarası: 8', 'Etiket: Binance Smart Chain Testnet'] ['İndex Numarası: 8', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/binance-coin-bnb-logo.png']
['İndex Numarası: 9', 'Zincir İsmi: moonbeam-moonbase-alpha'] ['İndex Numarası: 9', 'Zincir Numarası: 1287'] ['İndex Numarası: 9', 'Veritabanı İsimlendirmesi: chain\_moonbeam\_moonbase\_alpha'] ['İndex Numarası: 9', 'Etiket: Moonbeam Moonbase Alpha'] ['İndex Numarası: 9', 'Etiket: Moonbeam Moonbase Alpha'] ['İndex Numarası: 9', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/moonbeam-logo.png']
['İndex Numarası: 10', 'Zincir İsmi: moonbeam-moonriver'] ['İndex Numarası: 10', 'Zincir Numarası: 1285'] ['İndex Numarası: 10', 'Veritabanı İsimlendirmesi: chain\_moonbeam\_moonriver'] ['İndex Numarası: 10', 'Etiket: Moonbeam Moonriver'] ['İndex Numarası: 10', 'Etiket: Moonbeam Moonriver'] ['İndex Numarası: 10', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/moonbeam-logo.png']
['İndex Numarası: 11', 'Zincir İsmi: rsk-mainnet'] ['İndex Numarası: 11', 'Zincir Numarası: 30'] ['İndex Numarası: 11', 'Veritabanı İsimlendirmesi: chain\_rsk\_mainnet'] ['İndex Numarası: 11', 'Etiket: RSK Mainnet'] ['İndex Numarası: 11', 'Etiket: RSK Mainnet'] ['İndex Numarası: 11', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/rsk-mainnet-logo.svg']
['İndex Numarası: 12', 'Zincir İsmi: rsk-testnet'] ['İndex Numarası: 12', 'Zincir Numarası: 31'] ['İndex Numarası: 12', 'Veritabanı İsimlendirmesi: chain\_rsk\_testnet'] ['İndex Numarası: 12', 'Etiket: RSK Testnet'] ['İndex Numarası: 12', 'Etiket: RSK Testnet'] ['İndex Numarası: 12', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/rsk-mainnet-logo.svg']
['İndex Numarası: 13', 'Zincir İsmi: arbitrum-mainnet'] ['İndex Numarası: 13', 'Zincir Numarası: 42161'] ['İndex Numarası: 13', 'Veritabanı İsimlendirmesi: chain\_arbitrum\_mainnet'] ['İndex Numarası: 13', 'Etiket: Arbitrum Mainnet'] ['İndex Numarası: 13', 'Etiket: Arbitrum Mainnet'] ['İndex Numarası: 13', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/arbitrum-mainnet-logo.svg']
['İndex Numarası: 14', 'Zincir İsmi: arbitrum-testnet'] ['İndex Numarası: 14', 'Zincir Numarası: 421611'] ['İndex Numarası: 14', 'Veritabanı İsimlendirmesi: chain\_arbitrum\_testnet'] ['İndex Numarası: 14', 'Etiket: Arbitrum Testnet'] ['İndex Numarası: 14', 'Etiket: Arbitrum Testnet'] ['İndex Numarası: 14', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/arbitrum-mainnet-logo.svg']
['İndex Numarası: 15', 'Zincir İsmi: fantom-mainnet'] ['İndex Numarası: 15', 'Zincir Numarası: 250'] ['İndex Numarası: 15', 'Veritabanı İsimlendirmesi: chain\_fantom\_mainnet'] ['İndex Numarası: 15', 'Etiket: Fantom Opera'] ['İndex Numarası: 15', 'Etiket: Fantom Opera'] ['İndex Numarası: 15', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/fantom-ftm-logo.png']
['İndex Numarası: 16', 'Zincir İsmi: fantom-testnet'] ['İndex Numarası: 16', 'Zincir Numarası: 4002'] ['İndex Numarası: 16', 'Veritabanı İsimlendirmesi: chain\_fantom\_testnet'] ['İndex Numarası: 16', 'Etiket: Fantom Testnet'] ['İndex Numarası: 16', 'Etiket: Fantom Testnet'] ['İndex Numarası: 16', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/fantom-ftm-logo.png']
['İndex Numarası: 17', 'Zincir İsmi: palm-mainnet'] ['İndex Numarası: 17', 'Zincir Numarası: 11297108109'] ['İndex Numarası: 17', 'Veritabanı İsimlendirmesi: chain\_palm\_mainnet'] ['İndex Numarası: 17', 'Etiket: Palm Mainnet'] ['İndex Numarası: 17', 'Etiket: Palm Mainnet'] ['İndex Numarası: 17', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/palm-mainnet-logo.svg']
['İndex Numarası: 18', 'Zincir İsmi: palm-testnet'] ['İndex Numarası: 18', 'Zincir Numarası: 11297108099'] ['İndex Numarası: 18', 'Veritabanı İsimlendirmesi: chain\_palm\_testnet'] ['İndex Numarası: 18', 'Etiket: Palm Testnet'] ['İndex Numarası: 18', 'Etiket: Palm Testnet'] ['İndex Numarası: 18', 'Logo URL: https://www.covalenthq.com/static/images/icons/display-icons/palm-mainnet-logo.svg']
['İndex Numarası: 19', 'Zincir İsmi: covalent-internal-network-v1'] ['İndex Numarası: 19', 'Zincir Numarası: 1131378225'] ['İndex Numarası: 19', 'Veritabanı İsimlendirmesi: chain\_covint1'] ['İndex Numarası: 19', 'Etiket: Covalent Internal V1'] ['İndex Numarası: 19', 'Etiket: Covalent Internal V1'] ['İndex Numarası: 19', 'Logo URL: https://www.covalenthq.com/static/images/covalent-logomark.png']

Tablo 34

Yukarıda 04/08/2021 tarihi ile Covalent'in desteklediği blok zincir ağları fonksiyon çıktısı olarak verilmiştir. Zamanla yeni eklenenler olacaktır.